export const NODES = {
  a: 'a',
  ai: 'ai',
  aiChat: 'aiChat',
  audio: 'audio',
  blockquote: 'blockquote',
  bold: 'bold',
  callout: 'callout',
  code: 'code',
  codeBlock: 'code_block',
  codeLine: 'code_line',
  codeSyntax: 'code_syntax',
  column: 'column',
  columnGroup: 'column_group',
  comment: 'comment',
  date: 'date',
  emojiInput: 'emoji_input',
  equation: 'equation',
  excalidraw: 'excalidraw',
  file: 'file',
  h1: 'h1',
  h2: 'h2',
  h3: 'h3',
  h4: 'h4',
  h5: 'h5',
  h6: 'h6',
  highlight: 'highlight',
  hr: 'hr',
  img: 'img',
  inlineEquation: 'inline_equation',
  italic: 'italic',
  kbd: 'kbd',
  li: 'li',
  lic: 'lic',
  link: 'a',
  listTodoClassic: 'action_item',
  mediaEmbed: 'media_embed',
  mention: 'mention',
  mentionInput: 'mention_input',
  olClassic: 'ol',
  p: 'p',
  searchHighlight: 'search_highlight',
  slashInput: 'slash_input',
  strikethrough: 'strikethrough',
  sub: 'subscript',
  suggestion: 'suggestion',
  sup: 'superscript',
  table: 'table',
  tag: 'tag',
  taskList: 'taskList',
  td: 'td',
  th: 'th',
  toc: 'toc',
  toggle: 'toggle',
  tr: 'tr',
  ulClassic: 'ul',
  underline: 'underline',
  video: 'video',
} as const;

export const STYLE_KEYS = {
  backgroundColor: 'backgroundColor',
  color: 'color',
  fontFamily: 'fontFamily',
  fontSize: 'fontSize',
  fontWeight: 'fontWeight',
  indent: 'indent',
  lineHeight: 'lineHeight',
  listType: 'listStyleType',
  textAlign: 'textAlign',
  textIndent: 'textIndent',
} as const;

export const KEYS = {
  ...NODES,
  ...STYLE_KEYS,
  autoformat: 'autoformat',
  blockMenu: 'blockMenu',
  blockPlaceholder: 'blockPlaceholder',
  blockSelection: 'blockSelection',
  caption: 'caption',
  copilot: 'copilot',
  csv: 'csv',
  cursorOverlay: 'cursorOverlay',
  delete: 'delete',
  dnd: 'dnd',
  docx: 'docx',
  emoji: 'emoji',
  exitBreak: 'exitBreak',
  heading: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as string[],
  html: 'html',
  juice: 'juice',
  list: 'list',
  listChecked: 'checked',
  listClassic: 'listClassic',
  listRestart: 'listRestart',
  listRestartPolite: 'listRestartPolite',
  listStart: 'listStart',
  listTodo: 'todo',
  markdown: 'markdown',
  nodeId: 'nodeId',
  normalizeTypes: 'normalizeTypes',
  ol: 'decimal',
  placeholder: 'placeholder',
  playwright: 'playwright',
  removeEmptyNodes: 'removeEmptyNodes',
  resetNode: 'resetNode',
  singleBlock: 'singleBlock',
  singleLine: 'singleLine',
  slashCommand: 'slash_command',
  softBreak: 'softBreak',
  tabbable: 'tabbable',
  trailingBlock: 'trailingBlock',
  ul: 'disc',
  yjs: 'yjs',
} as const;

export type NodeKey = (typeof NODES)[keyof typeof NODES];
export type StyleKey = (typeof STYLE_KEYS)[keyof typeof STYLE_KEYS];
export type PlateKey = (typeof KEYS)[keyof typeof KEYS];
